Add gdk_frame_clock_get_fps
authorMatthias Clasen <mclasen@redhat.com>
Mon, 14 Sep 2020 03:31:17 +0000 (23:31 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 14 Sep 2020 03:35:01 +0000 (23:35 -0400)
We already have more than one copy of this code
in GTK, so just export this function.

docs/reference/gdk/gdk4-sections.txt
gdk/gdkframeclock.c
gdk/gdkframeclock.h

index c601c444070a7304ad6e8c6f589bcf210f425b35..68343f9923fb0fbd85369220581eb51fbbcd340f 100644 (file)
@@ -1036,6 +1036,7 @@ gdk_frame_clock_get_history_start
 gdk_frame_clock_get_timings
 gdk_frame_clock_get_current_timings
 gdk_frame_clock_get_refresh_info
+gdk_frame_clock_get_fps
 
 <SUBSECTION Private>
 GDK_FRAME_CLOCK
index 9ecb8707fb5cc707dd6133e621e30c3f668c5b85..4d05da780c1794a3bb562a38d7c3e768f4718376 100644 (file)
@@ -718,7 +718,6 @@ _gdk_frame_clock_emit_resume_events (GdkFrameClock *frame_clock)
   g_signal_emit (frame_clock, signals[RESUME_EVENTS], 0);
 }
 
-#ifdef HAVE_SYSPROF
 static gint64
 guess_refresh_interval (GdkFrameClock *frame_clock)
 {
@@ -753,8 +752,17 @@ guess_refresh_interval (GdkFrameClock *frame_clock)
   return interval;
 }
 
-static double
-frame_clock_get_fps (GdkFrameClock *frame_clock)
+/**
+ * gdk_frame_clock_get_fps:
+ * @frame_clock: a #GdkFrameClock
+ *
+ * Calculates the current frames-per-second, based on the
+ * frame timings of @frame_clock.
+ *
+ * Returns: the current fps, as a double
+ */
+double
+gdk_frame_clock_get_fps (GdkFrameClock *frame_clock)
 {
   GdkFrameTimings *start, *end;
   gint64 start_counter, end_counter;
@@ -788,7 +796,6 @@ frame_clock_get_fps (GdkFrameClock *frame_clock)
 
   return ((double) end_counter - start_counter) * G_USEC_PER_SEC / (end_timestamp - start_timestamp);
 }
-#endif
 
 void
 _gdk_frame_clock_add_timings_to_profiler (GdkFrameClock   *clock,
@@ -804,5 +811,5 @@ _gdk_frame_clock_add_timings_to_profiler (GdkFrameClock   *clock,
       gdk_profiler_add_mark (1000 * timings->presentation_time, 0, "presented window", NULL);
     }
 
-  gdk_profiler_set_counter (fps_counter, frame_clock_get_fps (clock));
+  gdk_profiler_set_counter (fps_counter, gdk_frame_clock_get_fps (clock));
 }
index 962bf0c189a4c612545c0ab23c54c61bcee7cf28..a2eba246ad92c4c3684f87b3a6fe1f753114cbe4 100644 (file)
@@ -103,6 +103,9 @@ void gdk_frame_clock_get_refresh_info (GdkFrameClock *frame_clock,
                                        gint64        *refresh_interval_return,
                                        gint64        *presentation_time_return);
 
+GDK_AVAILABLE_IN_ALL
+double gdk_frame_clock_get_fps (GdkFrameClock *frame_clock);
+
 G_END_DECLS
 
 #endif /* __GDK_FRAME_CLOCK_H__ */